package ch12_容器框架与泛型.案例实践_产品排序;

import ch12_容器框架与泛型.Product;
import ch12_容器框架与泛型.ProductUtil;

import java.util.TreeSet;

public class TreeSetDemo {
	public static void main(String[] args) {
		//构造树形集合（默认使用自然排序）
		TreeSet<ComparableProduct> set1 = new TreeSet<ComparableProduct>();
		//构造比较器对象
		ProductComparator comparator = new ProductComparator();
		//构造树形集合（指定了比较器，使用自定义排序）
		TreeSet<Product> set2 = new TreeSet<Product>(comparator);

		Product[] ps = ProductUtil.createProducts();	//生成产品数组
		for(Product p: ps) {
			ComparableProduct cp = ComparableProduct.from(p);
			set1.add(cp);
			set2.add(p);
		}

		System.out.println("set1的元素(自然排序)：");
		ProductUtil.printProducts(set1);
		System.out.println("set2的元素(自定义排序)：");
		ProductUtil.printProducts(set2);

		Product low = (Product) set2.first();		//得到最小的产品
		System.out.println("库存最少："+low.getName());
		Product high = (Product) set2.last();
		System.out.println("库存最多："+high.getName());

		Product target = new Product(9, "--",150);	//用于比较的目标产品

		TreeSet<Product> set3 = (TreeSet<Product>) set2.tailSet(target);
		System.out.print("库存超过"+target.getInventory()+"(含):");
		for (Object o : set3) {						//迭代
			Product p = (Product) o;
			System.out.print(p.getName()+" ");
		}
	}
}
